//ADD by Dong QiFei 2005/07/21 
/*
function show_cele_date(popCtrl,dateCtrl,strDate,allowclear)
Parameter:
		popCtrl is the widget beyond which you want this calendar to appear, could be a string which stand for its id;
		dateCtrl is the widget into which you want to put the selected date, could be a string which stand for its id;
		strDate is the initialized date, could be empty;
		allowclear is the boolean that whether you want to show "clear" control to clear the date or not, could be empty;
Usage:
<input type="text" id="dc" name="dc" style="text-align:center" readonly="readonly" onclick="show_cele_date(this,this,this.value,true);">
<input type="button" value="VIEW" onclick="show_cele_date('dc','dc');return false">
 */

function nowDate() {
	var myDate = new Date();
	var myYear = myDate.getFullYear();
	var myMonth = myDate.getMonth()+1;
	var myDay = myDate.getDate();
	var myDate = myYear+"-"+myMonth+"-"+myDay;
	return myDate;
}
function test() {
	alert(fSetDate(iYear, iMonth, iDay));
}
function getNowDate() {
	var nn=new Date();
	year1=nn.getFullYear();
	mon1=nn.getMonth()+1;
	date1=nn.getDate();
	var monstr1;
	var datestr1
	if(mon1<10) {
		monstr1="0"+mon1;
	}else {
		monstr1=""+mon1;
	}
	if(date1<10) {
		datestr1="0"+date1;
	}else {
		datestr1=""+date1;
	}
   return year1+"-"+monstr1+"-"+datestr1;
}
//目标日期
function getlastweekDate()
{
   var nn=new Date();
   year1=nn.getFullYear();
   mon1=nn.getMonth()+1;
   date1=nn.getDate();
   
   var mm=new Date(year1,mon1-1,date1);
   var tmp1=new Date(2000,1,1);
   var tmp2=new Date(2000,1,15);
   var ne=tmp2-tmp1;
   var mm2=new Date();
   mm2.setTime(mm.getTime()-ne);
   
   
   year2=mm2.getFullYear();
   mon2=mm2.getMonth()+1;
   date2=mm2.getDate();
    
    
     if(mon2<10) 
    monstr2="0"+mon2;
   else
    monstr2=""+mon2;
     
   if(date2<10) 
     datestr2="0"+date2;
   else
     datestr2=""+date2;
 
   
    return year2+"-"+monstr2+"-"+datestr2;
}


var gdCtrl = new Object();
var goSelectTag = new Array();
var gcGray   = "#808080";
var gcToggle = "#FB8664";
var gcBG = "#e5e6ec";
var previousObject = null;

var gdCurDate = new Date();
var giYear = gdCurDate.getFullYear();
var giMonth = gdCurDate.getMonth()+1;
var giDay = gdCurDate.getDate();

function fSetDate(iYear, iMonth, iDay){
  if ((iYear == 0) && (iMonth == 0) && (iDay == 0)){
  	gdCtrl.value = "";
  }else if(isNaN(iDay))gdCtrl.value = "";
  else
  {
  	iMonth = iMonth + 100 + "";
  	iMonth = iMonth.substring(1);
  	iDay   = iDay + 100 + "";
  	iDay   = iDay.substring(1);
  	if(gdCtrl.tagName == "INPUT"){
  	  	gdCtrl.value = iYear+"-"+iMonth+"-"+iDay;
  	}else{
  	  	gdCtrl.innerHTML = iYear+"-"+iMonth+"-"+iDay;
  	}
  }
  
  HiddenDiv();
  
  window.returnValue=gdCtrl.value;
  //window.close();

}

function HiddenDiv() {
	document.getElementById('span_clear').style.visibility = "hidden";
	document.getElementById('VicPopCal').style.visibility = "hidden";
	/*var obj;
	while(goSelectTag.length>0){
		obj = goSelectTag.pop();
		obj.style.visibility = "visible";
	}
	goSelectTag = null;
	goSelectTag = new Array();*/
}
function fSetSelected(aCell){
  var iOffset = 0;
  var iYear = parseInt(document.getElementById('tbSelYear').value);
  var iMonth = parseInt(document.getElementById('tbSelMonth').value);
 
  aCell.bgColor = gcBG; 
  for(var i=0;i<aCell.childNodes.length;i++)
  if (aCell.childNodes[i].tagName == 'FONT'){
  	  with (aCell.childNodes[i]){
	  	var iDay = parseInt(innerHTML);
	  	if (color==gcGray)
			iOffset = (face<10)?-1:1;
		iMonth += iOffset;
		if (iMonth<1) {
			iYear--;
			iMonth = 12;
		}else if (iMonth>12){
			iYear++;
			iMonth = 1;
		}
	  }
  }
  fSetDate(iYear, iMonth, iDay);
}

function Point(iX, iY){
	this.x = iX;
	this.y = iY;
}

function fBuildCal(iYear, iMonth) {
  var aMonth=new Array();
  for(i=1;i<7;i++)
  	aMonth[i]=new Array(i);
  
  var dCalDate=new Date(iYear, iMonth-1, 1);
  var iDayOfFirst=dCalDate.getDay();
  var iDaysInMonth=new Date(iYear, iMonth, 0).getDate();
  var iOffsetLast=new Date(iYear, iMonth-1, 0).getDate()-iDayOfFirst+1;
  var iDate = 1;
  var iNext = 1;

  for (d = 0; d < 7; d++)
	aMonth[1][d] = (d<iDayOfFirst)?-(iOffsetLast+d):iDate++;
  for (w = 2; w < 7; w++)
  	for (d = 0; d < 7; d++)
		aMonth[w][d] = (iDate<=iDaysInMonth)?iDate++:-(iNext++);
  return aMonth;
}

function fDrawCal(iYear, iMonth, iCellHeight, sDateTextSize) {
  var WeekDay = new Array("日","一","二","三","四","五","六");
  var styleTD = " bgcolor='"+gcBG+"' bordercolor='"+gcBG+"' valign='middle' align='center' height='"+iCellHeight+"' style='font:bold arial "+sDateTextSize+";";            //Coded by Hcy email:hcy110@263.net
  with (document) {
	write("<tr>");
	for(i=0; i<7; i++){
		write("<td "+styleTD+"color:maroon' >"+ WeekDay[i] + "</td>");
	}
	write("</tr>");

  	for (w = 1; w < 7; w++) {
		write("<tr>");
		for (d = 0; d < 7; d++) {
			write("<td "+styleTD+"cursor:hand;' onmouseover=\"this.bgColor='"+gcToggle+"'\" onmouseout=\"this.bgColor='"+gcBG+"'\" onclick='fSetSelected(this)'>");
			write("<font face='Hcy_Flag'> </font>");			
			write("</td>")
		}
		write("</tr>");
	}
  }
}

function fUpdateCal(iYear, iMonth) {
	myMonth = fBuildCal(iYear, iMonth);
	var i = 0;
	var t = document.getElementById('CalTable').childNodes[0];
	for(w = 0;w<t.childNodes.length-1;w++)
	{
		var r = t.childNodes[w+1];
		for(d = 0;d<r.childNodes.length;d++)
		{
			var c = r.childNodes[d];
			for(var f = 0;f < c.childNodes.length;f++)
			{
				with (c.childNodes[f]) {
					face = i++;
					if (myMonth[w+1][d]<0) {
						color = gcGray;
						innerHTML = -myMonth[w+1][d];
					}else{
						color = ((d==0)||(d==6))?"red":"black";
						innerHTML = myMonth[w+1][d];
					}
				}
			}
		}
	}
	document.getElementById('IFmDiv').innerHTML = document.getElementById('IFmDiv').innerHTML;//刷新iframe，解决Firefox中不刷新日历的问题
}

function fSetYearMon(iYear, iMon){
  document.getElementById('tbSelMonth').options[iMon-1].selected = true; 
  for (i = 0; i < document.getElementById('tbSelYear').length; i++)
	if (document.getElementById('tbSelYear').options[i].value == iYear)
		document.getElementById('tbSelYear').options[i].selected = true; 
  fUpdateCal(iYear, iMon);
}

function fPrevMonth(){
  var iMon = document.getElementById('tbSelMonth').value;
  var iYear = document.getElementById('tbSelYear').value;
  
  if (--iMon<1) {
	  iMon = 12;
	  iYear--;
  }
  
  fSetYearMon(iYear, iMon);
}

function fNextMonth(){
  var iMon = document.getElementById('tbSelMonth').value;
  var iYear = document.getElementById('tbSelYear').value;
  
  if (++iMon>12) {
	  iMon = 1;
	  iYear++;
  }
  
  fSetYearMon(iYear, iMon);
}
function seekChilds(parent)
{
	
	for(var i = 0;i<parent.childNodes.length;i++)
	{
		var son = parent.childNodes[i];
		if(son.tagName == undefined) continue;
		if(son.style.display == 'none') continue;
		if(son.tagName=="SELECT"){
			if ((son.id!="tbSelMonth")&&(son.id!="tbSelYear")&&fTagInBound(son))
			{
				son.style.visibility = "hidden";
				goSelectTag.push(son);
			}
		}
		seekChilds(son);
	}
}
function fToggleTags(){
seekChilds(document);
}

function fTagInBound(aTag){
  with (document.getElementById('VicPopCal').style){
  	var l = parseInt(left);
  	var t = parseInt(top);
  	var r = l+parseInt(width);
  	var b = t+parseInt(height);
	var ptLT = fGetXY(aTag);
	return !((ptLT.x>=r)||(ptLT.x+aTag.offsetWidth<l)||(ptLT.y>b)||(ptLT.y+aTag.offsetHeight<=t));
  }
}

function fGetXY(aTag){
  var oTmp = aTag;
  var pt = new Point(0,0);
  do {
  	pt.x += oTmp.offsetLeft;
  	pt.y += oTmp.offsetTop;
  	oTmp = oTmp.offsetParent;
  } while(oTmp.tagName!="BODY");
  return pt;
}

// Main: popCtrl is the widget beyond which you want this calendar to appear;
//       dateCtrl is the widget into which you want to put the selected date;
//		 strDate is the initialized date;
//		 allowclear is the flag that whether you want to show "clear" control to clear the date or not;
// i.e.: <input type="text" name="dc" id="dc" style="text-align:center" readonly="readonly" onclick="show_cele_date(this,this,this.value,true);"><INPUT type="button" value="V" onclick="show_cele_date(dc,dc,dc.value,true);return false">

function show_cele_date(popCtrl, dateCtrl, strDate, allowclear){
	if(typeof(popCtrl)=="string") popCtrl = document.getElementById(popCtrl);
	if(typeof(dateCtrl)=="string") dateCtrl = document.getElementById(dateCtrl);
	if (document.getElementById('popCtrl') == previousObject){
		if (document.getElementById('VicPopCal').style.visibility == "visible"){
			HiddenDiv();
			return true;
		}
	}
	previousObject = document.getElementById('popCtrl');
	gdCtrl = dateCtrl;
	fInitialDate(strDate);
	fSetYearMon(giYear, giMonth);
	var point = fGetXY(popCtrl);
	document.getElementById('VicPopCal').style.left = point.x+'px';
	document.getElementById('VicPopCal').style.top  = point.y+popCtrl.offsetHeight+'px';
	//document.getElementById('VicPopCal').style.width = VicPopCal.offsetWidth;
	//document.getElementById('VicPopCal').style.height = VicPopCal.offsetHeight;
	//fToggleTags();
	document.getElementById('VicPopCal').style.visibility = "visible";
	
	if(allowclear==undefined) allowclear = true;
	with(document.getElementById('span_clear').style){
		if(allowclear==true){
			visibility = "visible";
		}else{
			visibility = "hidden";
		}
	}
}

// Added by Han Chen
function fInitialDate(strDate){
	if( strDate == null || strDate.length != 10 )
		return false;

	var sYear  = strDate.substring(0,4);
	var sMonth = strDate.substring(5,7);
	var sDay   = strDate.substring(8,10);

	if( sMonth.charAt(0) == '0' ) { sMonth = sMonth.substring(1,2); }
	if( sDay.charAt(0)   == '0' ) { sDay   = sDay.substring(1,2);   }

	var nYear  = parseInt(sYear );
	var nMonth = parseInt(sMonth);
	var nDay   = parseInt(sDay  );
	
	if ( isNaN(nYear ) )	return false;
	if ( isNaN(nMonth) )	return false;
	if ( isNaN(nDay  ) )	return false;

	var arrMon = new Array(12);
	arrMon[ 0] = 31;	arrMon[ 1] = nYear % 4 == 0 ? 29:28;
	arrMon[ 2] = 31;	arrMon[ 3] = 30;
	arrMon[ 4] = 31;	arrMon[ 5] = 30;
	arrMon[ 6] = 31;	arrMon[ 7] = 31;
	arrMon[ 8] = 30;	arrMon[ 9] = 31;
	arrMon[10] = 30;	arrMon[11] = 31;

	if ( nYear  < 1900 || nYear > 2100 )			return false;
	if ( nMonth < 1 || nMonth > 12 )				return false;
	if ( nDay < 1 || nDay > arrMon[nMonth - 1] )	return false;

	giYear  = nYear;
	giMonth = nMonth;
	giDay   = nDay;
	return true;
}

var gMonths = new Array("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月");

with (document) {
write("<div id='VicPopCal' name='VicPopCal' style='position:absolute; visibility:hidden;z-index:100;padding:5;width:215px;height:192px;table-layout:fixed;'>");
write("<div id='IFmDiv'><iframe id='VicPopIFm' name='VicPopIFm' src='#' scrolling='no' frameborder='0' style='z-index:-2;position:absolute;width:100%;height:100%;'></iframe></div>");
write("<table border='1' cellpadding='0' cellspacing='0' bordercolordark='#FFFFFF' bordercolorlight='#333333' width='100%'><tr><td><table border='0' cellpadding='0' cellspacing='0' bgcolor='#cccccc' width='100%'>");
write("<tr>");
write("<td valign='middle' align='center' nowrap><input type='button' name='PrevMonth' value=' < ' style='height:20;width:20;fontWeight:bold' onclick='fPrevMonth()'>");
write(" <select name='tbSelYear' id='tbSelYear' onchange=\"fUpdateCal(this.value, document.getElementById('tbSelMonth').value)\" Victor='Won'>");
for(i=1949;i<2050;i++)
	write("<option value='"+i+"'>"+i+" 年</option>");
write("</select>");
write(" <select name='tbSelMonth' id='tbSelMonth' onchange=\"fUpdateCal(document.getElementById('tbSelYear').value, this.value)\" Victor='Won'>");
for (i=0; i<12; i++)
	write("<option value='"+(i+1)+"'>"+gMonths[i]+"</option>");
write("</select>");
write(" <input type='button' name='PrevMonth' value=' > ' style='height:20;width:20;FONT:bold' onclick='fNextMonth()'>");
write("</td>");
write("</TR><TR>");
write("<td align='center'>");
write("<div style='background-color:teal'><table id='CalTable' width='100%' border='0' cellpadding='0' cellspacing='1'>");
fDrawCal(giYear, giMonth, 20, '12');
write("</table></div>");
write("</td>");
write("</tr><tr><td align='center'>");
write("<table width='100%'><tr><td align='center'>");
write("<span id='span_clear' style='cursor:hand;fontWeight:bold;' onclick='fSetDate(0,0,0)' onmouseover=\"this.style.color='"+gcToggle+"'\" onmouseout='this.style.color=0'>清空</span>");
write("</td><td algin='center'>");
write("<span style='cursor:hand;fontWeight:bold;' onclick='fSetDate(giYear,giMonth,giDay)' onmouseover=\"this.style.color='"+gcToggle+"'\" onmouseout='this.style.color=0'>今天: "+giYear+"-"+giMonth+"-"+giDay+"</span>");
write("</td></tr></table>");
write("</td></tr>");
write("</table></td></tr></table>");
write("</div>");
}